AWS CDK 外で作成したリソースを AWS CDK で参照する方法

AWS CDK 外で作成したリソースを AWS CDK で参照する方法

cdk import の機能をご利用ください。
Clock Icon2024.08.02

困っていること

既にコンソール画面で作成したリソースを AWS CDK を用いて参照したいです。
どのように実装すれば利用できますか。

どう対応すればいいの?

cdk import の機能をご利用ください。

CDK の外部にて作成いただいたリソースを CDK 内でご利用いただく場合、
cdk import の機能を用いて該当のリソースを CDK 管理下においていただく必要がございます。

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/ref-cli-cmd-import.html

AWS CloudFormation リソースのインポートを使用して、既存の AWS リソースを CDK スタックにインポートします。

cdk import で CDK の管理下となったリソースは CDK を用いて作成した通常のリソースと同様に CDK にてご利用いただくことが可能になります。

ただし、下記のドキュメントに記載されていない一部リソースはインポートに対応していないため、事前に CDK 外部で作成されたリソースがインポート可能なリソースがどうかご確認いただけますようお願いいたします。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html

やってみた

実際に、コンソール画面にて作成した S3 バケットを cdk import を用いて CDK 管理下に置き、その後タグを付与してみます。

まずは S3 バケットを作成します。
一部バケット名はマスクしていますが、こんな感じの名前で作成します。

スクリーンショット 2024-08-01 17.47.47

CDK プロジェクトは以下のドキュメントを参考に作成していきます。
言語は TypeScript を選択してみました。

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/hello_world.html

まずは cdk import を実行するためのソースコードを作成していきます。
以下のように実装を行いました。

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

export class HelloCdkStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const importTestS3Bucket = new s3.Bucket(this, 'ImportedS3Bucket', {});
  }
}

その後、CDK CLI にて以下のコマンドを実行します。
リソースの特定に必要な情報の入力が求められるため、今回は S3 バケットの名前を入れましょう。

$ cdk import
$ HelloCdkStack/ImportedS3Bucket/Resource (AWS::S3::Bucket): enter BucketName (empty to skip): test-cdk-import-bucket-XXXXXXXXXX

インポートに成功しました!

Import operation complete. We recommend you run a drift detection operation to confirm your CDK app resource definitions are up-to-date. Read more here: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/detect-drift-stack.html

続いて、先ほどのソースコードに下記の処理を追加し、タグの付与を行ってみます。

    cdk.Tags.of(importTestS3Bucket).add('Project','hogehoge')

無事該当の S3 バケットにタグが付与されました。

スクリーンショット 2024-08-02 9.45.22

cdk import を利用することで、CDK 外部で作成したリソースも CDK で管理可能なことが確認できました!

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.